package com.grad.webstudy.dao;

import com.grad.webstudy.model.Apply;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;


@Repository
public interface ApplyDao {
    int deleteByPrimaryKey(Integer id);


    int insertSelective(Apply record);


    int updateByPrimaryKeySelective(Apply record);

    int updateByPrimaryKey(Apply record);


    /**
     * 增加审核记录
     *
     * @param record
     * @return
     */
    int insert(Apply record);


    /**
     * 根据id查询某条审核记录
     *
     * @param id
     * @return
     */
    Apply selectByPrimaryKey(Integer id);


    /**
     * 删除申请
     *
     * @param id
     * @return
     */
    int delete(@Param("id") int id, @Param("userId") Integer userId);


    /**
     * 更新申请状态
     *
     * @param id
     * @param status
     * @return
     */
    int update(@Param("id") int id, @Param("status") int status, @Param("result") String result);


    /**
     * 根据不同状态,不同用户查询不同的申请
     *
     * @param status
     * @param userId
     * @return
     */
    List<Apply> queryAll(@Param("userId") Integer userId, @Param("status") Integer status);


    /**
     * 更新状态
     *
     * @param objId
     * @param objType
     * @param status
     * @return
     */
    int updateStatus(@Param("objId") Integer objId,
                     @Param("objType") Integer objType,
                     @Param("status") Integer status);


    /**
     * 对删除申请记录之后对申请表中的处理
     * @param objIds
     * @param objType
     * @return
     */
    int updateStatusForDelete(@Param("objIds") List<String> objIds, @Param("objType") Integer objType);
}